#ifndef BOUNDING_HH
# define BOUNDING_HH

# include "phy_const.hh"
# include <math/vector.hh>
# include <math/plane.hh>

class Bounding
{
 public:
  Bounding (const Vector3f& pos,
	    const Vector3d& rotate,
	    const Vector3f& size);

  virtual bool intersect (Bounding* obj) = 0;
  virtual bool intersectWall (Plane& p) = 0;
  // Identity function (avoiding cast)
  virtual int operator() ();

  const Vector3f& pos () const;
  const Vector3f& size () const;
  const Vector3d& rotate () const;

  void pos (const Vector3f& pos);
  void size (const Vector3f& size);
  void rotate (const Vector3d& rotate);

 protected:
  Vector3f pos_;
  Vector3d rotate_;
  Vector3f size_;
};

#endif /// !BOUNDING_HH
